import axios from 'axios'
//引入vuex
import store from '@/store'
import router from '@/router'
import { MessageBox } from 'element-ui'  //导入element-ui组件库

// 创建axios的对象
const instance = axios.create({
    baseURL: "/api",  //配置固定域名
    timeout: 5000
})

// 请求拦截
// 所有的网络请求都会走这个方法,可以在请求添加自定义内容
instance.interceptors.request.use(
    config => {
        // 请求头添加token值
        config.headers['token'] = store.state.token || ''
        return config
    },
    err => {
        console.log(err) // for debug
        return Promise.request(err)
    }
)

// 响应拦截
// 此处可以根据服务器返回的状态码做相应的数据
instance.interceptors.response.use(
    function (response) {
        const res = response.data
        // console.log(res.code)
        if (res.code === 113) {
            MessageBox.alert('系统内部错误，请联系管理员维护!', '错误', {
                confirmButtonText: '确定',
                type: 'error'
            })
            return Promise.reject('error')
        } else if (res.code === undefined) {
            MessageBox.alert('登录信息已过期，请重新登录!', '错误', {
                confirmButtonText: '确定',
                type: 'error'
            }).then(() => {
                store.dispatch("logout");
                // 将跳转的路由path作为参数，登录成功后跳转到该路由
                router.push({ path: "/login", query: { redirect: router.history.current.fullPath } });
            })
            return Promise.reject('error')
        } else {
            return Promise.resolve(res);
        }
    },
    function (err) {
        console.log('err' + err) // for debug
        return Promise.request(err)
    }
)

export default instance;